package com.estate.report.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.estate.common.core.domain.BaseEntity;
import com.estate.report.domain.DataStatistics;
import com.estate.report.domain.dto.PerformanceStatisticsDto;
import com.estate.report.domain.vo.*;
import com.estate.report.enums.StatisticsSearchTypeEnum;

import java.util.Date;
import java.util.List;

public interface IDataStatisticsService extends IService<DataStatistics> {

    void genStatisticsData(Date startTime, Date endTime);

    Object getStatisticsData(String type);

    SummaryStatisticsVo getGMV(BaseEntity dataScope, StatisticsSearchTypeEnum typeEnum, Date weekStart, Date weekEnd);

    SummaryStatisticsVo getNum(BaseEntity dataScope, StatisticsSearchTypeEnum typeEnum, Date weekStart, Date weekEnd);

    SummaryStatisticsVo getMidPrice(BaseEntity dataScope, StatisticsSearchTypeEnum typeEnum, Date weekStart, Date weekEnd);

    List<RankStatisticsVo> getRankList(BaseEntity dataScope, StatisticsSearchTypeEnum typeEnum, Date weekStart, Date weekEnd);

    List<TrendStatisticsVo> getTrendList(BaseEntity dataScope, StatisticsSearchTypeEnum typeEnum, Date weekStart,
                                  Date weekEnd);

    List<RateStatisticsVo> getRateList(BaseEntity dataScope, StatisticsSearchTypeEnum typeEnum, Date weekStart,
                                       Date weekEnd);

    List<PerformanceVo> getPerformanceList(BaseEntity dataScope, PerformanceStatisticsDto dto);

    PerformanceDetailVo getPerformanceDetail(BaseEntity dataScope, PerformanceStatisticsDto dto);

}
